{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Assignment #01" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## by Doug Blank" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Q1) Write the function mylength" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "(define mylength\n", " (lambda (lyst)\n", " (cond\n", " ((null? lyst) 0) ;; base case\n", " (else (+ 1 (mylength (cdr lyst))))))) ;; recur" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we test it:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(mylength '())" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(mylength '(0))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(mylength '(1 2 3))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(mylength '(1 2 3 4 5))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#f" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(null? (cons 1 2))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#t" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(list? (cons 1 (cons 2 (cons 3 '()))))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(1 2 3)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'(1 2 3)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "(define mylist?\n", " (lambda (lyst)\n", " (cond\n", " ((null? lyst) #t)\n", " ((and (not (pair? (cdr lyst)))\n", " (not (null? (cdr lyst)))) #f)\n", " (else (mylist? (cdr lyst))))))\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#t" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(mylist? '())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "(mylist? " ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\n", "Traceback (most recent call last):\n", " File \"stdin\", line 1, col 1, in 'mylist?'\n", " File \"stdin\", line 5, col 12, in 'mylist?'\n", " File \"stdin\", line 5, col 21, in 'cdr'\n", " File \"stdin\", line 5, col 21\n", "RunTimeError: cdr called on non-pair 2\n", "\n" ] } ], "source": [ "(mylist? (cons 1 2))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(x y z a)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(snoc 'a '(x y z))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "z" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(rac '(x y z))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "(define count\n", " (lambda (atom lyst)\n", " (cond\n", " ((null? lyst) 0)\n", " ((eq? (car lyst) atom) (+ 1 (count atom (cdr lyst))))\n", " (else (count atom (cdr lyst))))))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(count 0 '())" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(count 'banana '(apple))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(count 'banana '(apple banana))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(count 'banana '(banana apple banana))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(count 'banana '((banana) apple banana))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "(define add\n", " (lambda (m n)\n", " (cond\n", " ((= n 0) m)\n", " (else (add (+ m 1) (- n 1))))))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1001" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(add 1 1000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Calysto Scheme 2", "language": "scheme", "name": "calysto_scheme" }, "language_info": { "codemirror_mode": { "name": "scheme" }, "mimetype": "text/x-scheme", "name": "scheme", "pygments_lexer": "scheme" } }, "nbformat": 4, "nbformat_minor": 0 }